package com.key.handler;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import com.key.util.Contants;

public class ReadConfigFile {
	
	String strPath = "";
	
	public void setConfileFilePath( String _strPath ) {
		strPath = _strPath;
	}

	public List<String> readConfigFileFromSDCard() {
		
		String strConfigFile = strPath;
		if ( !new File(strConfigFile).exists() ) {
			return null;
		}
		
		List<String> listConfig = new ArrayList<String>();
		try
		{
			  File file = new File(strConfigFile);
              BufferedReader reader;
              String tempString = "";
              try {
                      // FileReader f_reader = new FileReader(file);
                      // BufferedReader reader = new BufferedReader(f_reader);
                      FileInputStream fis = new FileInputStream(file);
                      BufferedInputStream in = new BufferedInputStream(fis);
                      in.mark(4);
                      byte[] first3bytes = new byte[3];
                      in.read(first3bytes);//找到文档的前三个字节并自动判断文档类型
                      in.reset();
                      if (first3bytes[0] == (byte) 0xEF && first3bytes[1] == (byte) 0xBB
                                      && first3bytes[2] == (byte) 0xBF) {// utf-8

                             reader = new BufferedReader(new InputStreamReader(in, "utf-8"));

                     } else if (first3bytes[0] == (byte) 0xFF
                                      && first3bytes[1] == (byte) 0xFE) {

                             reader = new BufferedReader(
                                              new InputStreamReader(in, "unicode"));
                      } else if (first3bytes[0] == (byte) 0xFE
                                      && first3bytes[1] == (byte) 0xFF) {

                             reader = new BufferedReader(new InputStreamReader(in,
                                              "utf-16be"));
                      } else if (first3bytes[0] == (byte) 0xFF
                                      && first3bytes[1] == (byte) 0xFF) {

                             reader = new BufferedReader(new InputStreamReader(in,
                                              "utf-16le"));
                      } else {

                             reader = new BufferedReader(new InputStreamReader(in, "GBK"));
                      }
                      String str = reader.readLine();

                     while (str != null) {
                    	 tempString = tempString + str + "\n";
                              str = reader.readLine();

                     }
                      reader.close();

             } catch (FileNotFoundException e) {
                      // TODO Auto-generated catch block
            	// Contants.writeFileToSD("1001]" + e.toString());
              } catch (IOException e) {
            	//  Contants.writeFileToSD("[1002]" + e.toString());
              }
			
			String [] strArray = tempString.split("\n");
			for(int i=0; i<strArray.length; i++) {
				listConfig.add(strArray[i].trim());
			}
			
			//inputStream.close();
		} catch (Exception e) {
			//Contants.writeFileToSD("[1003]" + e.toString());
			return null;
		}
		
		return listConfig;
	}
	
}
